package com.example.数组去重和排序;

import java.util.*;

/**
 * @Author: 唐佳辉
 * @CreateTime： 2024-06-14-下午4:47
 * @Description:
 * 题目描述
 * 给定一个乱序的数组，删除所有的重复元素，使得每个元素只出现一次，并且按照出现的次数从高到低进行排序，相同出现次数按照第一次出现顺序进行先后排序。
 *
 * 输入描述
 * 一个数组
 *
 * 输出描述
 * 去重排序后的数组
 *
 * 补充说明
 * 数组大小不超过100，数组元素值大小不超过100
 *
 */
public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] numsString = scanner.nextLine().split(",");
        int[] nums = new int[numsString.length];

        for (int i = 0; i < numsString.length; i++) {
            nums[i] = Integer.parseInt(numsString[i]);
        }

        Map<Integer, Integer> countMap = new HashMap<>();
        Map<Integer, Integer> firstIdxMap = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (!firstIdxMap.containsKey(nums[i])) {
                firstIdxMap.put(nums[i], i);
            }
            countMap.put(nums[i], countMap.getOrDefault(nums[i], 0) + 1);
        }

        List<Integer> uniqueNums = new ArrayList<>(countMap.keySet());
        Collections.sort(uniqueNums, (a, b) -> {
            if (countMap.get(a).equals(countMap.get(b))) {
                return firstIdxMap.get(a) - firstIdxMap.get(b);
            } else {
                return countMap.get(b) - countMap.get(a);
            }
        });

        StringBuilder result = new StringBuilder();
        for (int i = 0; i < uniqueNums.size(); i++) {
            result.append(uniqueNums.get(i));
            if (i != uniqueNums.size() - 1) {
                result.append(",");
            }
        }

        System.out.println(result);
    }


}
